package com.hulk.summary;


import com.hulk.summary.enums.SummaryType;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.http.MediaType;

import java.util.HashMap;
import java.util.Map;


/**
 * tenant properties
 *
 * @author hulk
 * @version 1.0.0
 */
@Data
@ConfigurationProperties(prefix = "spring.summary")
public class SummaryProperties {

    //合作方名称字段 例如 "partner_no"
    private String name = "";
    //key 为name的值(合作方号)， value 是秘钥。
    private Map<String ,String > safes = new HashMap<>();


    //MD2            //HmacMD5             //SM3
    //MD5            //HmacSHA1
    //SHA-1          //HmacSHA256
    //SHA-256        //HmacSHA384
    //SHA-384        //HmacSHA512
    //SHA-512

    //摘要字段名称 例如"signature"
    private String  summaryName;
    //摘要算法类型
    private SummaryType summaryType;

    //包含路径，默认跟目录
    private String  includePaths ;
    //排除路径，默认不排除任何路径。 排除路径的优先级高于包含路径优先级, 如果排除路径和包含路径交集排除路径生效，
    //如果排除路径为包含路径子集， 排除路径生效。包含路径差集生效。
    //如果排除路径为包含路径父集，包含路径子集生效， 排除路径差集生效。
    //如果路径最后一位为"/"或者后面有空格等字符， 都需要去除。
    private String excludePaths ;

    //现阶段紧支持 application/json。
    private MediaType mediaType = MediaType.APPLICATION_JSON_UTF8;

    //不参与摘要算法的签名字段。
    private String excludeFields ;

    private int order ;

    private boolean enabled = true;


//    属性                  类型             必需  说明
//    asyncSupported	   boolean	        否	 指定Filter是否支持异步模式
//    dispatcherTypes	   DispatcherType[]	否	 指定Filter对哪种方式的请求进行过滤。支持的属性：ASYNC、ERROR、FORWARD、INCLUDE、REQUEST；默认过滤所有方式的请求
//    filterName	       String	        否	 Filter名称
//    initParams	       WebInitParam[]	否	 配置参数
//    displayName	       String	        否	 Filter显示名
//    servletNames	       String[]	        否	 指定对哪些Servlet进行过滤
//    urlPatterns/value    String[]	        否	 两个属性作用相同，指定拦截的路径
//    Enabled              boolean          否   Filter自动注册 shiro 应该关闭


}
